int same_array(mixed *x, mixed *y)
{
	if (!arrayp(x) || !arrayp(y))
		return 0;
	if (sizeof(x) != sizeof(y))
		return 0;
	for (int i = 0; i < sizeof(x); i++)
	{
		if (arrayp(x[i]))
		{
			if (!same_array(x[i], y[i]))
				return 0;
		}
		else if (x[i] != y[i])
			return 0;
	}
	return 1;
}

void do_tests()
{
	mapping
	x = ([ 1 : "bazz" ]);

	ASSERT(
	catch(regexp("foo", "bar", x[1])));
	ASSERT(
	catch(regexp("foo", "bar", 1)));

	ASSERT(regexp("tabba", "a*b"));
	ASSERT(!regexp("tbba", "a+b"));
	ASSERT(same_array(regexp((
			{	"foo", "bar", "bazz"}), "b"), (
			{	"bar", "bazz"})));
	ASSERT(same_array(regexp((
			{	"foo", "bar", "bazz"}), "^...$"), (
			{	"foo", "bar"})));
	ASSERT(same_array(regexp((
			{	"foo", "bar", "bazz"}), "(oo|zz)", 1), (
			{	"foo", 1, "bazz", 3})));
	ASSERT(
	catch(regexp("foo", "+")));
	ASSERT(
	catch(regexp((
			{	"foo", "bar"}), "+")));
}
